package gaej.example.contact.server;

import java.util.ArrayList;
import java.util.List;

import gaej.example.contact.client.Componist;
import gaej.example.contact.client.Dirigent;
import gaej.example.contact.client.Muziekstuk;
import gaej.example.contact.client.Bezetting;
import gaej.example.contact.client.Uitvoering;

import gaej.example.contact.client.MusicService;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

public class MusicServiceImpl extends RemoteServiceServlet implements MusicService {
    private static final long serialVersionUID = 1L;
    private ComponistDAO componistDAO = new ComponistDAOJdo();
    private DirigentDAO dirigentDAO = new DirigentDAOJdo();
    private MuziekstukDAO muziekstukDAO = new MuziekstukDAOJdo();
    private UitvoeringDAO uitvoeringDAO = new UitvoeringDAOJdo();
    
    public void addComponist(Componist componist) {
        componistDAO.addComponist(componist);
    }

    public List<Componist> listComponisten() {
        List<Componist> listComponists = componistDAO.listComponisten();
        return new ArrayList<Componist> (listComponists);
    }

    public void removeComponist(Componist componist) {
        componistDAO.removeComponist(componist);
    }

    public void updateComponist(Componist componist) {
        componistDAO.updateComponist(componist);
    }


    public void addDirigent(Dirigent dirigent) {
        dirigentDAO.addDirigent(dirigent);
    }

    public List<Dirigent> listDirigenten() {
        List<Dirigent> listDirigents = dirigentDAO.listDirigenten();
        return new ArrayList<Dirigent> (listDirigents);
    }

    public void removeDirigent(Dirigent dirigent) {
        dirigentDAO.removeDirigent(dirigent);
    }

    public void updateDirigent(Dirigent dirigent) {
        dirigentDAO.updateDirigent(dirigent);
    }

    public void addMuziekstuk(Muziekstuk muziekstuk) {
        muziekstukDAO.addMuziekstuk(muziekstuk);
    }

    public List<Muziekstuk> listMuziekstukken() {
        List<Muziekstuk> listMuziekstukken = muziekstukDAO.listMuziekstukken();
        return new ArrayList<Muziekstuk> (listMuziekstukken);
    }

    public List<Bezetting> listMuziekstukBezetting(Muziekstuk muziekstuk) {
        List<Bezetting> listMuziekstukBezetting = muziekstukDAO.listMuziekstukBezetting(muziekstuk);
        return new ArrayList<Bezetting> (listMuziekstukBezetting);
    }
    
    public void removeMuziekstuk(Muziekstuk muziekstuk) {
        muziekstukDAO.removeMuziekstuk(muziekstuk);
    }

    public void updateMuziekstuk(Muziekstuk muziekstuk) {
        muziekstukDAO.updateMuziekstuk(muziekstuk);
    }
 
    public List<Uitvoering> listUitvoeringen() {
        List<Uitvoering> listUitvoeringen = uitvoeringDAO.listUitvoeringen();
        return new ArrayList<Uitvoering> (listUitvoeringen);
    }   
    public void addUitvoering(Uitvoering uitvoering){
        uitvoeringDAO.addUitvoering(uitvoering);
    }
    public void removeUitvoering(Uitvoering uitvoering){
        uitvoeringDAO.addUitvoering(uitvoering);
    }
    public void updateUitvoering(Uitvoering uitvoering){
        uitvoeringDAO.updateUitvoering(uitvoering);
    }  

}
